package com.fileupload.config;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.List;

/**
 * 应用程序主配置类
 * @author 小乙
 */
@Data
@Component
@ConfigurationProperties(prefix = "fileupload")
public class ApplicationConfig {
    private static final Logger logger = LoggerFactory.getLogger(ApplicationConfig.class);
    
    private List<ServerConfig> servers;        // FTP/SFTP服务器列表
    private List<MonitorConfig> monitorGroup;  // 监控列表
    /**
     * 日志配置
     */
    private LogConfig log = new LogConfig();
    
    @PostConstruct
    public void init() {
        logger.info("ApplicationConfig初始化完成");
        logger.info("服务器配置数量: {}", servers != null ? servers.size() : 0);
        logger.info("监控配置数量: {}", monitorGroup != null ? monitorGroup.size() : 0);
        
        if (monitorGroup != null && !monitorGroup.isEmpty()) {
            for (MonitorConfig monitor : monitorGroup) {
                logger.info("监控配置详情 - 名称: {}, 启用状态: {}, 监控目录: {}", 
                        monitor.getName(), monitor.getEnable(), monitor.getMonitorDir());
            }
        }
    }
    
    /**
     * 获取是否启用日志入库功能
     */
    public boolean isLogDatabaseEnabled() {
        return log.isEnabled();
    }
    
    /**
     * 设置是否启用日志入库功能
     */
    public void setLogDatabaseEnabled(boolean enabled) {
        log.setEnabled(enabled);
    }
    
    /**
     * 日志配置内部类
     */
    @Data
    public static class LogConfig {
        /**
         * 日志类型（mysql或redis）
         */
        private String logType = "mysql"; // 日志类型，默认为mysql
        
        /**
         * 是否启用日志入库功能
         */
        private boolean enabled = true; // 日志是否入库开关，默认为true
    }
}